/**
 * 
 */
package br.com.ac.fatureweb.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.ac.fatureweb.integration.enums.EnumStatus;
import br.com.ac.fatureweb.utilitary.Model;

/**
 * @author aldivone
 *
 */
@Entity
@Table(name = "USUARIO")
@SequenceGenerator(name = "SEQ_USUARIO", sequenceName = "SEQ_USUARIO", allocationSize = 1, initialValue = 1)
public class Usuario extends Model {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7654182564720338592L;

	@Id
	@GeneratedValue(generator = "SEQ_USUARIO", strategy = GenerationType.SEQUENCE)
	@Column(name = "ID")
	private Long id;

	@Column(name = "LOGIN", nullable = false, length = 60, unique = true)
	private String login;

	@Column(name = "SENHA", nullable = true, length = 20)
	private String senha;

	@Column(name = "EMAIL", nullable = false, length = 60)
	private String email;

	@Column(name = "APELIDO", nullable = false, length = 30)
	private String apelido;

	@Column(name = "NOME_COMPLETO", nullable = true, length = 60)
	private String nomeCompleto;

	@Column(name = "CPF", nullable = true, length = 60)
	private String cpf;

	@Column(name = "IP_ULTIMO_ACESSO", nullable = true, length = 30)
	private String ipUltimoAcesso;

	@Column(name = "PRIMEIRO_ACESSO", nullable = true)
	private Boolean primeiroAcesso;

	@Column(name = "ERRO_SENHA_ACESSO", nullable = true)
	private Integer erroSenhaAcesso;

	@Temporal(TemporalType.DATE)
	@Column(name = "DATA_EXPIRACAO_SENHA", nullable = true)
	private Date dataExpiracaoSenha;

	@Temporal(TemporalType.DATE)
	@Column(name = "DATA_ULTIMO_ACESSO", nullable = true)
	private Date dataUltimoAcesso;

	@Column(name = "STATUS", nullable = false)
	private EnumStatus status;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATA_ALTERACAO_SENHA")
	private Date dataAlteracaoSenha;

	public Usuario() {
		super();
	}

	public Usuario(Long id) {
		super();
		this.id = id;
	}

	public Usuario(Long id, String login, String senha, String email,
			String apelido, String nomeCompleto, String cpf,
			String ipUltimoAcesso, Boolean primeiroAcesso,
			Integer erroSenhaAcesso, Date dataExpiracaoSenha,
			Date dataUltimoAcesso, EnumStatus status, Date dataAlteracaoSenha) {
		super();
		this.id = id;
		this.login = login;
		this.senha = senha;
		this.email = email;
		this.apelido = apelido;
		this.nomeCompleto = nomeCompleto;
		this.cpf = cpf;
		this.ipUltimoAcesso = ipUltimoAcesso;
		this.primeiroAcesso = primeiroAcesso;
		this.erroSenhaAcesso = erroSenhaAcesso;
		this.dataExpiracaoSenha = dataExpiracaoSenha;
		this.dataUltimoAcesso = dataUltimoAcesso;
		this.status = status;
		this.dataAlteracaoSenha = dataAlteracaoSenha;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getApelido() {
		return apelido;
	}

	public void setApelido(String apelido) {
		this.apelido = apelido;
	}

	public String getNomeCompleto() {
		return nomeCompleto;
	}

	public void setNomeCompleto(String nomeCompleto) {
		this.nomeCompleto = nomeCompleto;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getIpUltimoAcesso() {
		return ipUltimoAcesso;
	}

	public void setIpUltimoAcesso(String ipUltimoAcesso) {
		this.ipUltimoAcesso = ipUltimoAcesso;
	}

	public Boolean getPrimeiroAcesso() {
		return primeiroAcesso;
	}

	public void setPrimeiroAcesso(Boolean primeiroAcesso) {
		this.primeiroAcesso = primeiroAcesso;
	}

	public Integer getErroSenhaAcesso() {
		return erroSenhaAcesso;
	}

	public void setErroSenhaAcesso(Integer erroSenhaAcesso) {
		this.erroSenhaAcesso = erroSenhaAcesso;
	}

	public Date getDataExpiracaoSenha() {
		return dataExpiracaoSenha;
	}

	public void setDataExpiracaoSenha(Date dataExpiracaoSenha) {
		this.dataExpiracaoSenha = dataExpiracaoSenha;
	}

	public Date getDataUltimoAcesso() {
		return dataUltimoAcesso;
	}

	public void setDataUltimoAcesso(Date dataUltimoAcesso) {
		this.dataUltimoAcesso = dataUltimoAcesso;
	}

	public EnumStatus getStatus() {
		return status;
	}

	public void setStatus(EnumStatus status) {
		this.status = status;
	}

	public Date getDataAlteracaoSenha() {
		return dataAlteracaoSenha;
	}

	public void setDataAlteracaoSenha(Date dataAlteracaoSenha) {
		this.dataAlteracaoSenha = dataAlteracaoSenha;
	}

}
